```html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Zookeeper性能调优指南 | 技术小馆</title>
    <link rel="stylesheet" href="https://cdn.staticfile.org/font-awesome/6.4.0/css/all.min.css">
    <link rel="stylesheet" href="https://cdn.staticfile.org/tailwindcss/2.2.19/tailwind.min.css">
    <link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
    <style>
        body {
            font-family: 'Noto Sans SC', Tahoma, Arial, Roboto, "Droid Sans", "Helvetica Neue", "Droid Sans Fallback", "Heiti SC", "Hiragino Sans GB", Simsun, sans-serif;
            color: #333;
            line-height: 1.6;
        }
        h1, h2, h3, h4 {
            font-family: 'Noto Serif SC', serif;
            font-weight: 600;
        }
        .hero {
            background: linear-gradient(135deg, #3498db 0%, #2c3e50 100%);
            color: white;
        }
        .card {
            transition: all 0.3s ease;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        }
        .card:hover {
            transform: translateY(-5px);
            box-shadow: 0 10px 20px rgba(0, 0, 0, 0.15);
        }
        .section-title {
            position: relative;
            padding-bottom: 0.5rem;
        }
        .section-title:after {
            content: '';
            position: absolute;
            bottom: 0;
            left: 0;
            width: 50px;
            height: 3px;
            background: linear-gradient(to right, #3498db, #2c3e50);
        }
        .highlight {
            background: linear-gradient(to right, rgba(52, 152, 219, 0.2), rgba(41, 128, 185, 0.2));
            padding: 0.2rem 0.4rem;
            border-radius: 3px;
        }
    </style>
</head>
<body class="bg-gray-50">
    <!-- Hero Section -->
    <section class="hero py-20 px-4 md:px-0 mb-16">
        <div class="container mx-auto max-w-5xl text-center">
            <h1 class="text-4xl md:text-5xl font-bold mb-6">Zookeeper性能调优指南</h1>
            <p class="text-xl md:text-2xl opacity-90 mb-8 max-w-3xl mx-auto">优化配置与调整策略，释放分布式协调服务的全部潜力</p>
            <div class="flex justify-center space-x-4">
                <span class="px-4 py-2 bg-white bg-opacity-20 rounded-full flex items-center">
                    <i class="fas fa-server mr-2"></i> 分布式系统
                </span>
                <span class="px-4 py-2 bg-white bg-opacity-20 rounded-full flex items-center">
                    <i class="fas fa-tachometer-alt mr-2"></i> 性能优化
                </span>
                <span class="px-4 py-2 bg-white bg-opacity-20 rounded-full flex items-center">
                    <i class="fas fa-cogs mr-2"></i> 配置管理
                </span>
            </div>
        </div>
    </section>

    <!-- Main Content -->
    <main class="container mx-auto max-w-5xl px-4 md:px-0 mb-20">
        <!-- Intro -->
        <section class="mb-16">
            <p class="text-lg leading-relaxed mb-6">
                调优 Zookeeper 的性能涉及多个方面，包括 JVM 参数调整、配置优化、网络配置、硬件资源管理、监控和故障排除等。根据具体的应用需求和集群负载，调整上述参数和策略，可以显著提高 Zookeeper 的性能和稳定性。
            </p>
            <div class="bg-blue-50 border-l-4 border-blue-500 p-4 rounded">
                <div class="flex">
                    <div class="flex-shrink-0 text-blue-500">
                        <i class="fas fa-lightbulb text-2xl"></i>
                    </div>
                    <div class="ml-3">
                        <p class="text-sm text-blue-700">
                            性能调优是一门平衡艺术 - 您需要在资源使用、响应时间和系统稳定性之间找到最佳平衡点。
                        </p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Visualization Section -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">Zookeeper性能优化维度</h2>
            <div class="bg-white rounded-lg shadow-md p-6">
                <div class="mermaid">
                    graph TD
                    A[Zookeeper性能优化] --> B[内存与文件系统]
                    A --> C[配置参数]
                    A --> D[网络配置]
                    A --> E[硬件资源]
                    A --> F[监控与故障排除]
                    A --> G[集群配置]
                    
                    B --> B1[JVM参数]
                    B --> B2[文件系统设置]
                    
                    C --> C1[事务日志和快照]
                    C --> C2[会话超时]
                    C --> C3[连接和线程]
                    
                    D --> D1[网络带宽]
                    D --> D2[网络延迟]
                    
                    E --> E1[CPU]
                    E --> E2[内存]
                    
                    F --> F1[监控工具]
                    F --> F2[故障排除]
                    
                    G --> G1[集群规模]
                    G --> G2[领导者选举]
                </div>
                <p class="text-sm text-gray-500 mt-4 text-center">点击图表中的节点可查看详细优化建议</p>
            </div>
        </section>

        <!-- Memory & File System -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">1. 调整内存和文件系统设置</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <!-- JVM -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-memory mr-2"></i> 1.1 JVM参数
                        </h3>
                    </div>
                    <div class="p-4">
                        <h4 class="font-medium text-gray-700 mb-2">堆内存大小</h4>
                        <p class="mb-4 text-gray-600">
                            根据节点的负载和数据量配置适当的 JVM 堆内存大小。可以使用 <span class="highlight">-Xms</span> 和 <span class="highlight">-Xmx</span> 参数来设置初始堆大小和最大堆大小。例如，<code class="bg-gray-100 px-2 py-1 rounded">-Xms4g -Xmx4g</code> 表示初始和最大堆大小均为 4 GB。
                        </p>
                        <h4 class="font-medium text-gray-700 mb-2">GC 设置</h4>
                        <p class="text-gray-600">
                            选择合适的垃圾回收器并调整 GC 参数。例如，可以使用 G1GC (<code class="bg-gray-100 px-2 py-1 rounded">-XX:+UseG1GC</code>) 来改善垃圾回收性能。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 对于生产环境，建议将初始堆(-Xms)和最大堆(-Xmx)设置为相同值，避免运行时调整带来的性能开销。
                            </p>
                        </div>
                    </div>
                </div>
                
                <!-- File System -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-hdd mr-2"></i> 1.2 文件系统设置
                        </h3>
                    </div>
                    <div class="p-4">
                        <h4 class="font-medium text-gray-700 mb-2">数据目录</h4>
                        <p class="mb-4 text-gray-600">
                            配置 <span class="highlight">dataDir</span> 和 <span class="highlight">dataLogDir</span> 参数，指定数据和事务日志目录。确保这些目录位于高速 SSD 上，以提高 I/O 性能。
                        </p>
                        <h4 class="font-medium text-gray-700 mb-2">文件系统缓存</h4>
                        <p class="text-gray-600">
                            调整文件系统缓存设置，确保高效的读写操作。可以适当增加操作系统的文件缓存大小。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 建议将数据目录和事务日志目录分别放在不同的物理磁盘上，以避免 I/O 竞争。
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Zookeeper Config -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">2. 优化 Zookeeper 配置参数</h2>
            
            <div class="grid md:grid-cols-3 gap-6">
                <!-- 事务日志和快照 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-file-alt mr-2"></i> 2.1 事务日志和快照
                        </h3>
                    </div>
                    <div class="p-4">
                        <h4 class="font-medium text-gray-700 mb-2">snapCount</h4>
                        <p class="mb-4 text-gray-600">
                            调整 <span class="highlight">snapCount</span> 参数来设置生成快照的频率。增加此值可以减少快照生成的频率，从而减少 I/O 负载，但可能会增加恢复时间。
                        </p>
                        <h4 class="font-medium text-gray-700 mb-2">logRetention</h4>
                        <p class="text-gray-600">
                            配置 <span class="highlight">logRetention</span> 设置保留的事务日志数量，以防止日志过多占用磁盘空间。
                        </p>
                    </div>
                </div>
                
                <!-- 会话超时 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-clock mr-2"></i> 2.2 会话超时
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            调整 <span class="highlight">sessionTimeout</span> 参数，以平衡故障检测的速度和误判的风险。较短的超时时间可以提高故障检测速度，但可能会导致网络抖动时的误判。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 常规生产环境建议设置为 <span class="font-medium">2-20秒</span> 之间，具体取决于网络稳定性和应用需求。
                            </p>
                        </div>
                    </div>
                </div>
                
                <!-- 连接和线程 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-plug mr-2"></i> 2.3 连接和线程
                        </h3>
                    </div>
                    <div class="p-4">
                        <h4 class="font-medium text-gray-700 mb-2">maxClientCnxns</h4>
                        <p class="mb-4 text-gray-600">
                            调整 <span class="highlight">maxClientCnxns</span> 参数，限制每个客户端的最大连接数，以防止单个客户端占用过多资源。
                        </p>
                        <h4 class="font-medium text-gray-700 mb-2">maxConnections</h4>
                        <p class="text-gray-600">
                            配置 <span class="highlight">maxConnections</span> 参数来限制节点的最大连接数，从而避免过多连接导致的性能问题。
                        </p>
                    </div>
                </div>
            </div>
        </section>

        <!-- Network Config -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">3. 网络配置优化</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <!-- 网络带宽 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-network-wired mr-2"></i> 3.1 网络带宽
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            确保 Zookeeper 节点之间的网络连接具有足够的带宽。网络带宽不足会导致数据同步延迟，从而影响性能。
                        </p>
                        <div class="mt-4">
                            <div class="flex items-center mb-2">
                                <div class="w-1/3 font-medium text-gray-700">集群规模</div>
                                <div class="w-2/3 text-gray-600">建议最小带宽</div>
                            </div>
                            <div class="flex items-center mb-1">
                                <div class="w-1/3">3-5节点</div>
                                <div class="w-2/3">1 Gbps</div>
                            </div>
                            <div class="flex items-center">
                                <div class="w-1/3">5+节点</div>
                                <div class="w-2/3">10 Gbps</div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- 网络延迟 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-tachometer-alt mr-2"></i> 3.2 网络延迟
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            优化网络配置以降低延迟，包括选择合适的网络设备和配置。高延迟会影响领导者和跟随者之间的数据同步速度。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 理想情况下，Zookeeper 节点间的网络延迟应控制在 <span class="font-medium">5ms</span> 以内，最高不超过 <span class="font-medium">20ms</span>。
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Hardware Resources -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">4. 硬件资源优化</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <!-- CPU -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-microchip mr-2"></i> 4.1 CPU
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            Zookeeper 的性能可能会受到 CPU 资源的影响，尤其是在高负载的情况下。确保有足够的 CPU 核心来处理并发请求。
                        </p>
                        <div class="mt-4">
                            <div class="flex items-center mb-2">
                                <div class="w-1/3 font-medium text-gray-700">集群负载</div>
                                <div class="w-2/3 text-gray-600">建议CPU配置</div>
                            </div>
                            <div class="flex items-center mb-1">
                                <div class="w-1/3">轻负载</div>
                                <div class="w-2/3">2-4核</div>
                            </div>
                            <div class="flex items-center mb-1">
                                <div class="w-1/3">中等负载</div>
                                <div class="w-2/3">4-8核</div>
                            </div>
                            <div class="flex items-center">
                                <div class="w-1/3">高负载</div>
                                <div class="w-2/3">8-16核</div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- 内存 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-memory mr-2"></i> 4.2 内存
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            确保每个 Zookeeper 节点有足够的内存来存储数据和进行缓存操作。内存不足会导致频繁的垃圾回收和性能下降。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 内存需求主要取决于数据集大小和请求量。一般建议堆内存设置为 <span class="font-medium">4-16GB</span>，过大可能导致GC暂停时间过长。
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Monitoring & Troubleshooting -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">5. 监控和故障排除</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <!-- 监控工具 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-chart-line mr-2"></i> 5.1 监控工具
                        </h3>
                    </div>
                    <div class="p-4">
                        <h4 class="font-medium text-gray-700 mb-2">JMX</h4>
                        <p class="mb-4 text-gray-600">
                            使用 JMX 监控 Zookeeper 的性能指标，包括请求延迟、队列长度、处理速度等。
                        </p>
                        <h4 class="font-medium text-gray-700 mb-2">第三方监控工具</h4>
                        <p class="text-gray-600">
                            使用如 Prometheus、Grafana 等第三方监控工具，收集和可视化 Zookeeper 的性能数据。
                        </p>
                        <div class="mt-4 flex flex-wrap gap-2">
                            <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm">znode数量</span>
                            <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm">请求延迟</span>
                            <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm">连接数</span>
                            <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-sm">队列长度</span>
                        </div>
                    </div>
                </div>
                
                <!-- 故障排除 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-search mr-2"></i> 5.2 故障排除
                        </h3>
                    </div>
                    <div class="p-4">
                        <h4 class="font-medium text-gray-700 mb-2">日志分析</h4>
                        <p class="mb-4 text-gray-600">
                            定期分析 Zookeeper 日志，识别性能瓶颈和潜在问题。重点关注 WARN 和 ERROR 级别的日志。
                        </p>
                        <h4 class="font-medium text-gray-700 mb-2">性能调优</h4>
                        <p class="text-gray-600">
                            根据监控数据调整配置参数，以优化性能。常见调优方向包括内存分配、GC 策略和网络参数。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 定期监控 <span class="font-medium">OutstandingRequests</span> 和 <span class="font-medium">Latency</span> 指标，它们能有效反映系统健康状况。
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Cluster Configuration -->
        <section class="mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">6. 调整 Zookeeper 的集群配置</h2>
            
            <div class="grid md:grid-cols-2 gap-6">
                <!-- 集群规模 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-sitemap mr-2"></i> 6.1 集群规模
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            根据负载需求调整集群节点数量。增加节点数量可以提高系统的容错能力和处理能力，但也需要考虑网络和资源的可用性。
                        </p>
                        <div class="mt-4">
                            <div class="flex items-center mb-2">
                                <div class="w-1/3 font-medium text-gray-700">节点数量</div>
                                <div class="w-2/3 text-gray-600">容错能力</div>
                            </div>
                            <div class="flex items-center mb-1">
                                <div class="w-1/3">3节点</div>
                                <div class="w-2/3">可容忍1个节点故障</div>
                            </div>
                            <div class="flex items-center mb-1">
                                <div class="w-1/3">5节点</div>
                                <div class="w-2/3">可容忍2个节点故障</div>
                            </div>
                            <div class="flex items-center">
                                <div class="w-1/3">7节点</div>
                                <div class="w-2/3">可容忍3个节点故障</div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <!-- 领导者选举 -->
                <div class="card bg-white rounded-lg overflow-hidden border border-gray-100">
                    <div class="bg-blue-500 px-4 py-3">
                        <h3 class="text-lg font-semibold text-white flex items-center">
                            <i class="fas fa-crown mr-2"></i> 6.2 领导者选举
                        </h3>
                    </div>
                    <div class="p-4">
                        <p class="text-gray-600">
                            优化领导者选举过程，以减少选举延迟和对集群性能的影响。确保网络配置和硬件资源支持高效的选举过程。
                        </p>
                        <div class="mt-4 p-3 bg-gray-50 rounded border-l-4 border-blue-400">
                            <p class="text-sm text-gray-600">
                                <i class="fas fa-info-circle text-blue-500 mr-1"></i> 选举时间与集群规模相关，3节点集群通常能在 <span class="font-medium">200ms</span> 内完成选举，而大型集群可能需要更长时间。
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </section>

        <!-- Summary -->
        <section class="bg-white rounded-lg shadow-md p-6 mb-16">
            <h2 class="text-2xl font-bold mb-6 section-title">最佳实践总结</h2>
            <div class="grid md:grid-cols-2 gap-6">
                <div>
                    <h3 class="text-lg font-semibold text-blue-600 mb-3">✔️ 必须做到的</h3>
                    <ul class="space-y-2">
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                            <span>为 JVM 设置合理的堆内存大小</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                            <span>将数据和日志目录放在高性能存储上</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                            <span>实施全面的监控系统</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
                            <span>根据负载选择合适的集群规模</span>
                        </li>
                    </ul>
                </div>
                <div>
                    <h3 class="text-lg font-semibold text-red-600 mb-3">❌ 需要避免的</h3>
                    <ul class="space-y-2">
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-2"></i>
                            <span>将 JVM 堆内存设置过大导致长GC暂停</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-2"></i>
                            <span>使用慢速磁盘存储数据和日志</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-2"></i>
                            <span>忽略监控和日志分析</span>
                        </li>
                        <li class="flex items-start">
                            <i class="fas fa-times-circle text-red-500 mt-1 mr-2"></i>
                            <span>在网络延迟高的情况下部署集群</span>
                        </li>
                    </ul>
                </div>
            </div>
        </section>
    </main>

    <!-- Footer -->
    <footer class="bg-gray-900 text-white py-10">
        <div class="container mx-auto max-w-5xl px-4 md:px-0">
            <div class="flex flex-col md:flex-row justify-between items-center">
                <div class="mb-4 md:mb-0">
                    <h3 class="text-xl font-semibold">技术小馆</h3>
                    <p class="text-gray-400 mt-1">专注技术分享与最佳实践</p>
                </div>
                <div>
                    <a href="http://www.yuque.com/jtostring" class="text-blue-300 hover:text-blue-100 transition-colors duration-300">
                        <i class="fas fa-globe mr-2"></i> http://www.yuque.com/jtostring
                    </a>
                </div>
            </div>
            <div class="border-t border-gray-800 mt-6 pt-6 text-center text-gray-500 text-sm">
                &copy; 2023 技术小馆. 版权所有.
            </div>
        </div>
    </footer>

    <script src="https://cdn.jsdelivr.net/npm/mermaid@latest/dist/mermaid.min.js"></script>
    <script>
        mermaid.initialize({
            startOnLoad: true,
            theme: 'default',
            flowchart: {
                useMaxWidth: true,
                htmlLabels: true,
                curve: 'basis'
            }
        });
        
        // 简单的交互效果
        document.querySelectorAll('.card').forEach(card => {
            card.addEventListener('click', function() {
                this.classList.toggle('ring-2');
                this.classList.toggle('ring-blue-500');
            });
        });
    </script>
</body>
</html>
```